gtkiconcache: Use g_stat instead of fstat
authorChristoph Reiter <reiter.christoph@gmail.com>
Tue, 2 Jun 2020 18:31:33 +0000 (20:31 +0200)
committerChristoph Reiter <reiter.christoph@gmail.com>
Tue, 2 Jun 2020 18:35:56 +0000 (20:35 +0200)
stat/fstat aren't compatible with GStatBuf on Windows in all cases.
Since we don't really need the file descriptor anyway here replace it with
a g_stat call.

This fixes a compiler warning with 64bit mingw.
And lets us remove this scary ifdeffery.

gtk/gtkiconcache.c

index e8d982a5663882f0a1553010fa24a3ec5abdd311..ada3d95c792cde6d82b05ecb25865a68671e9308 100644 (file)
@@ -81,7 +81,6 @@ gtk_icon_cache_new_for_path (const gchar *path)
   GMappedFile *map;
 
   gchar *cache_filename;
-  gint fd = -1;
   GStatBuf st;
   GStatBuf path_st;
 
@@ -93,24 +92,7 @@ gtk_icon_cache_new_for_path (const gchar *path)
   if (g_stat (path, &path_st) < 0)
     goto done;
 
-  /* Open the file and map it into memory */
-  fd = g_open (cache_filename, O_RDONLY|_O_BINARY, 0);
-
-  if (fd < 0)
-    goto done;
-
-#ifdef G_OS_WIN32
-
-/* Bug 660730: _fstat32 is only defined in msvcrt80.dll+/VS 2005+ */
-/*             or possibly in the msvcrt.dll linked to by the Windows DDK */
-/*             (will need to check on the Windows DDK part later) */
-#if ((defined (_MSC_VER) && (_MSC_VER >= 1400 || __MSVCRT_VERSION__ >= 0x0800)) || defined (__MINGW64_VERSION_MAJOR)) && !defined(_WIN64)
-#undef fstat /* Just in case */
-#define fstat _fstat32
-#endif
-#endif
-
-  if (fstat (fd, &st) < 0 || st.st_size < 4)
+  if (g_stat (cache_filename, &st) < 0 || st.st_size < 4)
     goto done;
 
   /* Verify cache is uptodate */
@@ -154,8 +136,6 @@ gtk_icon_cache_new_for_path (const gchar *path)
 
  done:
   g_free (cache_filename);
-  if (fd >= 0)
-    close (fd);
 
   return cache;
 }